// This example shows how to subscribe to OPC XML-DA item changes and obtain the events by pulling them. // // Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . using System; using OpcLabs.EasyOpc.DataAccess; using OpcLabs.EasyOpc.DataAccess.OperationModel; namespace DocExamples.DataAccess.Xml { class PullItemChanged { public static void Main1Xml() { // Instantiate the client object. // In order to use event pull, you must set a non-zero queue capacity upfront. var client = new EasyDAClient { PullItemChangedQueueCapacity = 1000 }; Console.WriteLine("Subscribing item changes..."); client.SubscribeItem( "http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx", "Dynamic/Analog Types/Int", 1000, state: null); Console.WriteLine("Processing item changes for 1 minute..."); int endTick = Environment.TickCount + 60 * 1000; do { EasyDAItemChangedEventArgs eventArgs = client.PullItemChanged(2 * 1000); if (!(eventArgs is null)) // Handle the notification event Console.WriteLine(eventArgs); } while (Environment.TickCount < endTick); Console.WriteLine("Unsubscribing item changes..."); client.UnsubscribeAllItems(); Console.WriteLine("Finished."); } } }
# This example shows how to subscribe to OPC XML-DA item changes and obtain the events by pulling them. # # Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . # OPC client and subscriber examples in Python on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-Python . # The QuickOPC package is needed. Install it using "pip install opclabs_quickopc". import opclabs_quickopc import time # Import .NET namespaces. from OpcLabs.EasyOpc import * from OpcLabs.EasyOpc.DataAccess import * # Instantiate the client object client = EasyDAClient() # In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 print('Subscribing item changes...') IEasyDAClientExtension.SubscribeItem(client, ServerDescriptor('http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx'), DAItemDescriptor('Dynamic/Analog Types/Int'), DAGroupParameters(1000), None) # state print('Processing item changes for 1 minute...') endTime = time.time() + 60 while time.time() < endTime: eventArgs = IEasyDAClientExtension.PullItemChanged(client, 2*1000) if eventArgs is not None: # Handle the notification event print(eventArgs) print('Unsubscribing item changes...') client.UnsubscribeAllItems() print('Finished.')
' This example shows how to subscribe to OPC XML-DA item changes and obtain the events by pulling them. ' ' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Imports OpcLabs.EasyOpc.DataAccess Imports OpcLabs.EasyOpc.DataAccess.OperationModel Namespace DataAccess.Xml Partial Friend Class PullItemChanged Public Shared Sub Main1Xml() ' In order to use event pull, you must set a non-zero queue capacity upfront. Dim client = New EasyDAClient() With {.PullItemChangedQueueCapacity = 1000} Console.WriteLine("Subscribing item changes...") client.SubscribeItem( "http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx", "Dynamic/Analog Types/Int", 1000, state:=Nothing) Console.WriteLine("Processing item changes for 1 minute...") Dim endTick As Integer = Environment.TickCount + 60 * 1000 Do Dim eventArgs As EasyDAItemChangedEventArgs = client.PullItemChanged(2 * 1000) If Not eventArgs Is Nothing Then ' Handle the notification event Console.WriteLine(eventArgs) End If Loop While Environment.TickCount < endTick Console.WriteLine("Unsubscribing item changes...") client.UnsubscribeAllItems() Console.WriteLine("Finished.") End Sub End Class End Namespace
// This example shows how to subscribe to OPC XML-DA item changes and obtain the events by pulling them. // // Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . class procedure PullItemChanged.MainXml; var Arguments: OleVariant; Client: OpcLabs_EasyOpcClassic_TLB._EasyDAClient; EndTick: Cardinal; EventArgs: _EasyDAItemChangedEventArgs; ItemSubscriptionArguments1: _EasyDAItemSubscriptionArguments; begin ItemSubscriptionArguments1 := CoEasyDAItemSubscriptionArguments.Create; ItemSubscriptionArguments1.ServerDescriptor.UrlString := 'http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx'; ItemSubscriptionArguments1.ItemDescriptor.ItemID := 'Dynamic/Analog Types/Int'; ItemSubscriptionArguments1.GroupParameters.RequestedUpdateRate := 1000; Arguments := VarArrayCreate([0, 0], varVariant); Arguments[0] := ItemSubscriptionArguments1; // Instantiate the client object Client := CoEasyDAClient.Create; // In order to use event pull, you must set a non-zero queue capacity upfront. Client.PullItemChangedQueueCapacity := 1000; WriteLn('Subscribing item changes...'); Client.SubscribeMultipleItems(Arguments); WriteLn('Processing item changes for 1 minute...'); EndTick := Ticks + 60*1000; while Ticks < EndTick do begin EventArgs := Client.PullItemChanged(2*1000); if EventArgs <> nil then // Handle the notification event WriteLn(EventArgs.ToString); end; WriteLn('Unsubscribing item changes...'); Client.UnsubscribeAllItems; WriteLn('Finished.'); end;
// This example shows how to subscribe to OPC XML-DA item changes and obtain the events by pulling them. // // Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . $ItemSubscriptionArguments1 = new COM("OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments"); $ItemSubscriptionArguments1->ServerDescriptor->UrlString = "http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx"; $ItemSubscriptionArguments1->ItemDescriptor->ItemID = "Dynamic/Analog Types/Int"; $ItemSubscriptionArguments1->GroupParameters->RequestedUpdateRate = 1000; $arguments[0] = $ItemSubscriptionArguments1; // Instantiate the client object. $Client = new COM("OpcLabs.EasyOpc.DataAccess.EasyDAClient"); // In order to use event pull, you must set a non-zero queue capacity upfront. $Client->PullItemChangedQueueCapacity = 1000; print "Subscribing item changes...\n"; $Client->SubscribeMultipleItems($arguments); print "Processing item changed events for 1 minute...\n"; $endTime = time() + 60; do { $EventArgs = $Client->PullItemChanged(2*1000); if (!is_null($EventArgs)) { // Handle the notification event print $EventArgs->ToString(); print "\n"; } } while (time() < $endTime);
Rem This example shows how to subscribe to OPC XML-DA item changes and obtain the events by pulling them. Rem Rem Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Private Sub PullItemChanged_MainXml_Command_Click() OutputText = "" Dim eventArgs As EasyDAItemChangedEventArgs Dim ItemSubscriptionArguments1 As New EasyDAItemSubscriptionArguments ItemSubscriptionArguments1.serverDescriptor.UrlString = "http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx" ItemSubscriptionArguments1.ItemDescriptor.ItemId = "Dynamic/Analog Types/Int" ItemSubscriptionArguments1.GroupParameters.RequestedUpdateRate = 1000 Dim arguments(0) As Variant Set arguments(0) = ItemSubscriptionArguments1 ' Instantiate the client object Dim client As New EasyDAClient ' In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 OutputText = OutputText & "Subscribing item changes..." & vbCrLf Call client.SubscribeMultipleItems(arguments) OutputText = OutputText & "Processing item changes for 1 minute..." & vbCrLf Dim endTick As Long endTick = GetTickCount + 60000 While GetTickCount < endTick Set eventArgs = client.PullItemChanged(2 * 1000) If Not eventArgs Is Nothing Then ' Handle the notification event OutputText = OutputText & eventArgs & vbCrLf End If Wend OutputText = OutputText & "Unsubscribing item changes..." & vbCrLf client.UnsubscribeAllItems OutputText = OutputText & "Finished." & vbCrLf End Sub
Rem This example shows how to subscribe to OPC XML-DA item changes and obtain the events by pulling them. Rem Rem Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Option Explicit Dim ItemSubscriptionArguments1: Set ItemSubscriptionArguments1 = CreateObject("OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments") ItemSubscriptionArguments1.ServerDescriptor.UrlString = "http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx" ItemSubscriptionArguments1.ItemDescriptor.ItemID = "Dynamic/Analog Types/Int" ItemSubscriptionArguments1.GroupParameters.RequestedUpdateRate = 1000 Dim arguments(0) Set arguments(0) = ItemSubscriptionArguments1 Dim Client: Set Client = CreateObject("OpcLabs.EasyOpc.DataAccess.EasyDAClient") ' In order to use event pull, you must set a non-zero queue capacity upfront. Client.PullItemChangedQueueCapacity = 1000 WScript.Echo "Subscribing item changes..." Client.SubscribeMultipleItems arguments WScript.Echo "Processing item changes for 1 minute..." Dim endTime: endTime = Now() + 60*(1/24/60/60) Do Dim EventArgs: Set EventArgs = Client.PullItemChanged(2*1000) If Not (EventArgs Is Nothing) Then ' Handle the notification event WScript.Echo EventArgs End If Loop While Now() < endTime WScript.Echo "Unsubscribing item changes..." Client.UnsubscribeAllItems WScript.Echo "Finished."
# This example shows how to subscribe to changes of multiple OPC XML-DA items and obtain the item changed events by pulling them. # # Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . # OPC client and subscriber examples in Python on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-Python . # The QuickOPC package is needed. Install it using "pip install opclabs_quickopc". import opclabs_quickopc import time # Import .NET namespaces. from OpcLabs.EasyOpc import * from OpcLabs.EasyOpc.DataAccess import * from OpcLabs.EasyOpc.DataAccess.OperationModel import * # Instantiate the client object client = EasyDAClient() # In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 print('Subscribing item changes...') itemSubscriptionArguments1 = EasyDAItemSubscriptionArguments( ServerDescriptor('http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx'), DAItemDescriptor('Dynamic/Analog Types/Double'), DAGroupParameters(1000), None) itemSubscriptionArguments2 = EasyDAItemSubscriptionArguments( ServerDescriptor('http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx'), DAItemDescriptor('Dynamic/Analog Types/Double[]'), DAGroupParameters(1000), None) itemSubscriptionArguments3 = EasyDAItemSubscriptionArguments( ServerDescriptor('http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx'), DAItemDescriptor('Dynamic/Analog Types/Int'), DAGroupParameters(1000), None) # Intentionally specifying an unknown item here, to demonstrate its behavior. itemSubscriptionArguments4 = EasyDAItemSubscriptionArguments( ServerDescriptor('http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx'), DAItemDescriptor('SomeUnknownItem'), DAGroupParameters(1000), None) client.SubscribeMultipleItems([ itemSubscriptionArguments1, itemSubscriptionArguments2, itemSubscriptionArguments3, itemSubscriptionArguments4, ]) print('Processing item changes for 1 minute...') endTime = time.time() + 60 while time.time() < endTime: eventArgs = IEasyDAClientExtension.PullItemChanged(client, 2*1000) if eventArgs is not None: # Handle the notification event if (eventArgs.Succeeded): print(eventArgs.Arguments.ItemDescriptor.ItemId, ': ', eventArgs.Vtq, sep='') else: print(eventArgs.Arguments.ItemDescriptor.ItemId, ' *** Failure: ', eventArgs.ErrorMessageBrief, sep='') print('Unsubscribing item changes...') client.UnsubscribeAllItems() print('Finished.')
# This example shows how to subscribe to changes of multiple OPC XML-DA items and obtain the item changed events by pulling them. # # The Python for Windows (pywin32) extensions package is needed. Install it using "pip install pypiwin32". # CAUTION: We now recommend using Python.NET package instead. Full set of examples with Python.NET is available! # # Find all latest examples here : https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . import time import win32com.client # Instantiate the client object client = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.EasyDAClient') # In order to use event pull, you must set a non-zero queue capacity upfront. client.PullItemChangedQueueCapacity = 1000 print('Subscribing item changes...') itemSubscriptionArguments1 = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments') itemSubscriptionArguments1.ServerDescriptor.UrlString = 'http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx' itemSubscriptionArguments1.ItemDescriptor.ItemID = 'Dynamic/Analog Types/Double' itemSubscriptionArguments1.GroupParameters.RequestedUpdateRate = 1000 itemSubscriptionArguments2 = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments') itemSubscriptionArguments2.ServerDescriptor.UrlString = 'http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx' itemSubscriptionArguments2.ItemDescriptor.ItemID = 'Dynamic/Analog Types/Double[]' itemSubscriptionArguments2.GroupParameters.RequestedUpdateRate = 1000 itemSubscriptionArguments3 = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments') itemSubscriptionArguments3.ServerDescriptor.UrlString = 'http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx' itemSubscriptionArguments3.ItemDescriptor.ItemID = 'Dynamic/Analog Types/Int' itemSubscriptionArguments3.GroupParameters.RequestedUpdateRate = 1000 # Intentionally specifying an unknown item here, to demonstrate its behavior. itemSubscriptionArguments4 = win32com.client.Dispatch('OpcLabs.EasyOpc.DataAccess.OperationModel.EasyDAItemSubscriptionArguments') itemSubscriptionArguments4.ServerDescriptor.UrlString = 'http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx' itemSubscriptionArguments4.ItemDescriptor.ItemID = 'SomeUnknownItem' itemSubscriptionArguments4.GroupParameters.RequestedUpdateRate = 1000 arguments = [ itemSubscriptionArguments1, itemSubscriptionArguments2, itemSubscriptionArguments3, itemSubscriptionArguments4, ] client.SubscribeMultipleItems(arguments) print('Processing item changes for 1 minute...') endTime = time.time() + 60 while time.time() < endTime: eventArgs = client.PullItemChanged(2*1000) if eventArgs is not None: # Handle the notification event if (eventArgs.Succeeded): print(eventArgs.Arguments.ItemDescriptor.ItemId, ': ', eventArgs.Vtq, sep='') else: print(eventArgs.Arguments.ItemDescriptor.ItemId, ' *** Failure: ', eventArgs.ErrorMessageBrief, sep='') print('Unsubscribing item changes...') client.UnsubscribeAllItems() print('Finished.')
Copyright © 2004-2024 CODE Consulting and Development, s.r.o., Plzen. All rights reserved. Web page: www.opclabs.com
Send Documentation Feedback. Resources: Knowledge Base, Product Downloads. Technical support: Online Forums, FAQ.Missing some example? Ask us for it on our Online Forums! You do not have to own a commercial license in order to use Online Forums, and we reply to every post.